A System-on-Chip (SoC) is a large silicon chip implementing an entire subsystem comprising numerous subcomponents. A Network-on-Chip (NoC) provides a standard interconnection scheme for large, possibly standardized components in a System-on-Chip. Without an NoC, these subcomponents would be connected in ad-hoc ways, utilizing numerous ad-hoc interfaces on the subcomponents. Such ad-hoc configuration makes it difficult to route the overall chip properly and meet timing requirements. With a Network-on-Chip, each subcomponent is designed to, and verified against, an interface with known, fixed properties, and later the interconnect is customized and/or synthesized to tie these subcomponents together into an overall system.
Generally, an NoC implements point-to-point connections, and the desired service properties may vary from connection to connection. At one extreme, a connection could be a completely provisioned, dedicated connection with so-called “Guaranteed Traffic” (GT), and on the other extreme, a connection could utilize shared bandwidth to transmit packetized data with variable latency on a so-called “Best Effort” (BE) basis. The former might be useful for real-time, high-bandwidth, high-utilization streaming data, whereas the latter might be useful for signaling, status, control, and configuration purposes, all requiring much less bandwidth and mostly insensitive to variable latency.
Various schemes have been proposed to allow one network to provide both extremes of service, if not even more types in between, but these require extensive additional logic to provide the guarantees for GT while still providing BE routing capabilities and avoiding deadlock for BE. These schemes also have not been fully explored because most NoCs carry mostly packetized read/write traffic between compute and memory cores for high-performance computing applications, whereas other application areas, such as multimedia, networking, and digital signal processing (DSP), all operate on real-time streaming data.